小编典典

如何从 Java 设置环境变量?

all

如何从 Java
设置环境变量?我看到我可以使用ProcessBuilder.
不过,我有几个子进程要启动,所以我宁愿修改当前进程的环境并让子进程继承它。

有一个System.getenv(String)用于获取单个环境变量的方法。我还可以Map使用System.getenv().
但是,调用put()Map会引发UnsupportedOperationException-
显然它们意味着环境是只读的。而且,没有System.setenv().

那么,有没有办法在当前运行的进程中设置环境变量呢?如果是这样,怎么做?如果不是,原因是什么?(是不是因为这是
Java,所以我不应该做邪恶的不可移植的过时的事情,比如触摸我的环境?)如果不是,任何关于管理环境变量更改的好建议,我需要提供给几个子进程?


阅读 189

收藏
2022-03-31

共1个答案

小编典典

(是不是因为这是 Java,所以我不应该做邪恶的不可移植的过时的事情,比如触摸我的环境?)

我想你已经一针见血了。

减轻负担的一种可能方法是分解出一种方法

void setUpEnvironment(ProcessBuilder builder) {
    Map<String, String> env = builder.environment();
    // blah blah
}

ProcessBuilder在启动它们之前通过它。

此外,您可能已经知道这一点,但您可以使用相同的ProcessBuilder. 因此,如果您的子流程相同,则无需一遍又一遍地进行此设置。

2022-03-31